Storage systems, such as solid state drives (SSDs) including NAND flash memory, are commonly used in electronic systems ranging from consumer products to enterprise-level computer systems. SSDs and similar storage devices utilizing block-oriented architectures share a common issue: the need to create space for writing new data by collecting sparsely distributed data into a smaller number of blocks. This process is referred to as “garbage collection”. The need for garbage collection in many block-oriented storage devices is generally due to the inability to write in place to memory, and the mismatch between write granularity and erase granularity in those storage devices.
The garbage collection process may introduce a significant burden on processing resources which, in turn, may reduce SSD performance. Garbage collection involves reading valid data from a block of non-volatile memory that is to be reused and writing it back to a new block. Many real-life data workloads, notably except uniform random and sequential, have different write densities for different logical areas, with some data being ‘hot’ or frequently written, and ‘cold’ or less frequently written. When data of different temperatures is mixed together, the SSD can experience significant write amplification, where write amplification refers to the physical amount of data written or copied above the logical amount of data received.